package cn.kgc.spring.day04.service.impl;

import cn.kgc.spring.day04.service.TeacherService;

/**
 * @author 课工场
 * @date 2024/7/16
 * @description  为了实现代码的业务的增强  必须要改写源代码  改写源代码的方式  违背了代码的编写的开闭原则
 *
 * 为了实现代码功能的增强 不修改源代码 可以利用设计模式实现 代理模式
 *
 * 分类:
 *    1.静态代理  代理类: 给其它类增强业务功能的类         被代理类:  需要增强业务功能的类
 *       1.1 创建一个类实现和被代理类相同的接口
 *       1.2 代理类需要依赖被代理类
 *    注意: 通过静态代理的方式可以实现业务功能增强, 但是不利于代码的维护
 *
 *    2.动态代理   不需要用户在实际维护一个类作为代理类  程序运行的过程中自动生成代理类
 *       2.1  JDK   基于接口的代理模式
 *       2.1 Cglib  基于父子类关系的代理模式
 */
public class TeacherServiceImpl implements TeacherService {

    @Override
    public String techOnline(String course) {

        System.out.println(course+"课程线上教学进行中...");

        return course;
    }

    @Override
    public String techOffline(String course) {

        System.out.println(course+"课程线下教学进行中...");

        return course+"课程线下教学进行中...";
    }
}
